<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

    <div class="box">
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
        <input type="checkbox" name="" id=""/> 测试数据<br>
    </div><br>
    <div class="box_btn">
        <button id="selectAll">全选</button>
        <button id="noselect">全不选</button>
        <button id="select">反选</button>
    </div>
</body>

<script>
    // 封装是不是数组
    function isArr( array ){
        var length = array && array.length;
        return typeof length == 'number' && length >= 0;
    }
    // 封装each方法
    function each( array , callback ){
        var i,k;
        if ( isArr(array) ) {
            for ( i = 0 ; i < array.length ; i++ ) {
                if ( callback.call( array[i],i,array[i] ) === false ) break;
            }
        }else {
            for ( k in array ) {
                if ( callback.call( array[k] , k , array[k] ) ) break;
            }
        }
        return array;
    }
    // 封装选择方法
    function checked( selector ){
        var list = document.querySelectorAll( selector );
        return {
            nodes: list,
            each: function ( callback ) {
                each( this.nodes, callback )
            }
        }
    }
    // 开始使用封装代码
    /*console.log(checked('#selectAll'));*/

    checked('#selectAll').nodes[0].onclick = function(){
        checked('.box>input').each(function(i,e){
            this.checked = true;
        });
    }
</script>
</html>